﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Inventario_HardSoft.Controlador;
using Inventario_HardSoft.ADO;

namespace Inventario_HardSoft.Presentacion
{
    public partial class Historial_por_Asistente_Reparador : Form
    {
        private Ctrl_H_Asist_Rep controlador;
        private Ctrl_Estado_Equipos estadoEq;
        private Ctrl_Reg_Sol conexion;
        public Historial_por_Asistente_Reparador()
        {
            InitializeComponent();
            controlador = new Ctrl_H_Asist_Rep();
               estadoEq = new Ctrl_Estado_Equipos();
               conexion = new Ctrl_Reg_Sol();
        }

        private void cb_Nomb_Asist_Reparador_DropDown(object sender, EventArgs e)
        {
            grib_Asistente_ReparadorHw.Rows.Clear();
            grib_Asistente_ReparadorSw.Rows.Clear(); 
            txt_Descripcion.Text = "";
            txt_Estado.Text = "";
            txt_Solucion.Text = "";
            txt_TiempoRep.Text = "";
            txt_Programa.Text = "";
            txtRechazo.Text = "";
            txt_Prioridad.Text = "";
            txt_AsignadoPrincipal.Text = "";
            //limpiamos el combo
            cb_Nomb_Asist_Reparador.Items.Clear();
            //vas a llenar el listbox, llamar a la base de datos
            List<USUARIO> reparadores = controlador.getList_Asistentes();
            foreach (USUARIO r in reparadores) //recorre cada elemento de label1 lista
            {
                cb_Nomb_Asist_Reparador.Items.Add(r.NOMBRE.ToString());
            }            
        }

        private void cb_Nomb_Asist_Reparador_SelectionChangeCommitted(object sender, EventArgs e)
        {        
            btn_Buscar.Focus();
            grib_Asistente_ReparadorHw.ClearSelection();
            grib_Asistente_ReparadorSw.ClearSelection();
        }

        private void button1_Click(object sender, EventArgs e)
        {         
            if (cb_Nomb_Asist_Reparador.SelectedIndex >= 0)
            {
                controlador.getList_ProblemasxAsistente(grib_Asistente_ReparadorHw, cb_Nomb_Asist_Reparador.SelectedItem.ToString());               
            }           
            else if (grib_Asistente_ReparadorHw.SelectedRows.Count == 0)
            {
                MessageBox.Show("Seleccione el asistente/reparador", "Camilo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }
            grib_Asistente_ReparadorHw.ClearSelection();
            txt_Descripcion.Text = "";
            txt_Estado.Text = "";
            txt_Solucion.Text = "";
            txt_TiempoRep.Text = "";
            txt_Programa.Text = "";
            txt_Prioridad.Text = "";
            txt_AsignadoPrincipal.Text = "";
            llenaGrillaSw();        
        }

        private void llenaGrillaSw()
        {
            if (cb_Nomb_Asist_Reparador.SelectedIndex >= 0)
            {
                controlador.getList_ProblemasxAsistenteSw(grib_Asistente_ReparadorSw, cb_Nomb_Asist_Reparador.SelectedItem.ToString());                
            } 
            grib_Asistente_ReparadorSw.ClearSelection();
            txt_Descripcion.Text = "";
            txt_Estado.Text = "";
            txt_Solucion.Text = "";
            txt_TiempoRep.Text = "";
            txt_Programa.Text = "";
            txt_Prioridad.Text = "";
            txt_AsignadoPrincipal.Text = "";
        }
        
        private void grib_Asistente_Reparador_SelectionChanged(object sender, EventArgs e)
        { 
            foreach (DataGridViewRow rowSelected in grib_Asistente_ReparadorHw.SelectedRows)
            {
                // coge datos de la grilla para pasarlos al txt...
                //muestro en el panel de Detalles del Problema
                txt_Descripcion.Text = rowSelected.Cells[7].Value.ToString();
                txt_Estado.Text = rowSelected.Cells[8].Value.ToString();
                txt_Solucion.Text = rowSelected.Cells[9].Value.ToString();
                txt_TiempoRep.Text = rowSelected.Cells[10].Value.ToString();
                txt_Prioridad.Text = rowSelected.Cells[11].Value.ToString();
                txt_AsignadoPrincipal.Text = rowSelected.Cells[15].Value.ToString();
             if (txt_Estado.Text == "pendiente") 
              {
                //System.Drawing.Color.Red
                txt_Estado.BackColor= Color.Blue;                    
                //txt_Estado.BackColor = System.Drawing.Color.Blue;
              }
             else if (txt_Estado.Text == "pendiente")
              {
                //System.Drawing.Color.Red
                txt_Estado.ForeColor = System.Drawing.Color.Red;
              } 
            }                        
        }
         
        private void tabControl1_Selected(object sender, TabControlEventArgs e)
        {
            //grib_Asistente_ReparadorSw.ClearSelection();
            //txt_Descripcion.Text = "";
            //txt_Estado.Text = "";
            //txt_Solucion.Text = "";
            //txt_TiempoRep.Text = "";
            //txt_Programa.Text = "";
            //txt_Prioridad.Text = "";
        }

        private void grib_Asistente_ReparadorSw_SelectionChanged(object sender, EventArgs e)
        {
            foreach (DataGridViewRow rowSelected in grib_Asistente_ReparadorSw.SelectedRows)
            {
                // coge datos de la grilla para pasarlos al txt...
                //muestro en el panel de Detalles del Problema
                txt_Descripcion.Text = rowSelected.Cells[7].Value.ToString();
                txt_Estado.Text = rowSelected.Cells[8].Value.ToString();
                txt_Solucion.Text = rowSelected.Cells[9].Value.ToString();
                txt_TiempoRep.Text = rowSelected.Cells[10].Value.ToString();
                txt_Programa.Text = rowSelected.Cells[11].Value.ToString();
                txt_Prioridad.Text = rowSelected.Cells[12].Value.ToString();
                txt_AsignadoPrincipal.Text = rowSelected.Cells[15].Value.ToString();

            }
            if (txt_Prioridad.Text == "1") { txt_Prioridad.Text = "Alta"; }
            else if (txt_Prioridad.Text == "2") { txt_Prioridad.Text = "Media"; }
            else if (txt_Prioridad.Text == "3") { txt_Prioridad.Text = "Baja"; }
        }

        private void tabControl1_Click(object sender, EventArgs e)
        {
            grib_Asistente_ReparadorHw.ClearSelection();
            grib_Asistente_ReparadorSw.ClearSelection();
            txt_Descripcion.Text = "";
            txt_Estado.Text = "";
            txt_Solucion.Text = "";
            txt_TiempoRep.Text = "";
            txt_Programa.Text = "";
            txt_Prioridad.Text = "";
            txt_AsignadoPrincipal.Text = "";
        }

        private void Historial_por_Asistente_Reparador_Load(object sender, EventArgs e)
        {

        }

        private void comboAsistente_DropDown(object sender, EventArgs e)
        {
            List<USUARIO> reparadores = controlador.getList_Asistentes();
            foreach (USUARIO r in reparadores) //recorre cada elemento de label1 lista
            {
                comboAsistente.Items.Add(r.NOMBRE.ToString());
            }            
        }

        private void checkboxReasignar_CheckedChanged(object sender, EventArgs e)
        {
            if (checkboxReasignar.Checked)
            {
                comboAsistente.Enabled = true;
                btnAceptar.Enabled = true;
            }
            else
            {
                comboAsistente.Enabled = false;
                btnAceptar.Enabled = false;
                comboAsistente.SelectedIndex =-1;
            }
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            string idprob = string.Empty;
            switch (tabControl1.SelectedIndex)
            {
                case 0:  //tabpage Hardware
                    if (grib_Asistente_ReparadorHw.Rows.Count > 0)
                    {
                        //verificamos que el problema este en reparación
                        if (grib_Asistente_ReparadorHw.SelectedRows[0].Cells["estado"].Value.ToString().Trim() == "pendiente")
                        {
                            idprob = grib_Asistente_ReparadorHw.SelectedRows[0].Cells["idproblema"].Value.ToString();
                            conexion.reasignaProblema(idprob, comboAsistente.SelectedItem.ToString());
                            grib_Asistente_ReparadorHw.Rows.Clear();
                            controlador.getList_ProblemasxAsistente(grib_Asistente_ReparadorHw, cb_Nomb_Asist_Reparador.SelectedItem.ToString());
                            grib_Asistente_ReparadorHw.ClearSelection();
                            MessageBox.Show("Problema reasignado","Camilo", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                            checkboxReasignar.Checked = false;
                        }
                        else if (grib_Asistente_ReparadorHw.SelectedRows[0].Cells["estado"].Value.ToString().Trim() == "atendido")
                        {
                            MessageBox.Show("El problema ya se encuentra reparado, no se puede reasignar", "Camilo", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                        }
                    }
                break;
                case 1: //tabpage Software
                    if (grib_Asistente_ReparadorSw.Rows.Count > 0)
                    {
                        if (grib_Asistente_ReparadorSw.SelectedRows[0].Cells["estaado"].Value.ToString().Trim() == "pendiente")
                        { 
                            idprob = grib_Asistente_ReparadorSw.SelectedRows[0].Cells["idproblemaa"].Value.ToString();
                            conexion.reasignaProblema(idprob, comboAsistente.SelectedItem.ToString());
                            grib_Asistente_ReparadorSw.Rows.Clear();
                            controlador.getList_ProblemasxAsistente(grib_Asistente_ReparadorSw, cb_Nomb_Asist_Reparador.SelectedItem.ToString());
                            grib_Asistente_ReparadorSw.ClearSelection();
                            MessageBox.Show("Problema reasignado", "Camilo", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                            checkboxReasignar.Checked = false;
                        }
                        else if (grib_Asistente_ReparadorSw.SelectedRows[0].Cells["estaado"].Value.ToString().Trim() == "atendido")
                        {
                            MessageBox.Show("El problema ya se encuentra reparado, no se puede reasignar", "Camilo", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                        }
                    }
                break;
            }
        }

        private void btnRechazar_Click(object sender, EventArgs e)
        {
            string idprob = string.Empty;
            switch (tabControl1.SelectedIndex)
            {
                case 0:  //tabpage Hardware
                    if (grib_Asistente_ReparadorHw.Rows.Count > 0)
                    {
                        //verificamos que el problema este en reparación
                        if (grib_Asistente_ReparadorHw.SelectedRows[0].Cells["estado"].Value.ToString().Trim() == "pendiente")
                        {
                            idprob = grib_Asistente_ReparadorHw.SelectedRows[0].Cells["idproblema"].Value.ToString();
                            if (String.IsNullOrWhiteSpace(txtRechazo.Text))
                            {MessageBox.Show("No ingreso el motivo del rechazo", "Motivo de rechazo vacia");  }
                            else{ conexion.rechazaProblema(idprob, txtRechazo.Text); }                           
                            grib_Asistente_ReparadorHw.Rows.Clear();
                            //carga la grilla
                            controlador.getList_ProblemasxAsistente(grib_Asistente_ReparadorHw, cb_Nomb_Asist_Reparador.SelectedItem.ToString());
                            grib_Asistente_ReparadorHw.ClearSelection();
                            MessageBox.Show("Problema rechazado", "Camilo", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                            txtRechazo.Text = "";
                            checkboxReasignar.Checked = false;
                        }
                    }
                    break;
                case 1: //tabpage Software
                    if (grib_Asistente_ReparadorSw.Rows.Count > 0)
                    {
                        if (grib_Asistente_ReparadorSw.SelectedRows[0].Cells["estaado"].Value.ToString().Trim() == "pendiente")
                        {
                            idprob = grib_Asistente_ReparadorSw.SelectedRows[0].Cells["idproblemaa"].Value.ToString();
                            if (String.IsNullOrWhiteSpace(txtRechazo.Text))
                            { MessageBox.Show("No ingreso el motivo del rechazo", "Motivo de rechazo vacia"); }
                            else { conexion.rechazaProblema(idprob, txtRechazo.Text); }  
                            grib_Asistente_ReparadorSw.Rows.Clear();
                            //carga la grilla
                            controlador.getList_ProblemasxAsistente(grib_Asistente_ReparadorHw, cb_Nomb_Asist_Reparador.SelectedItem.ToString());
                            grib_Asistente_ReparadorSw.ClearSelection();
                            MessageBox.Show("Problema reasignado", "Camilo", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                            checkboxReasignar.Checked = false;
                        }
                    }
                    break;
            } 
        }
   }
}
